Stored Procedures [dbo].[amsp_CMInsertContent]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)Direction
@InNavMenuIDnumeric(18,0)9
@InContactIDnumeric(18,0)9
@InContentTitlevarchar(255)255
@OutContentIDnumeric(18,0)9Out
Permissions
TypeActionOwning Principal
GrantExecuteIMIS
SQL Script
-- =============================================
-- Creates a Content record
--
-- Modifications:
-- 07/30/2003  E.Tatsui    Created
-- =============================================

CREATE           PROCEDURE amsp_CMInsertContent
    @InNavMenuID numeric,
  @InContactID numeric,
  @InContentTitle varchar(255),
  @OutContentID numeric OUTPUT
AS

BEGIN
  DECLARE
    @DefaultOwnerMeGroupSpecificInd char(1),
    @DefaultOwnerContactID numeric,
    @DefaultReminderDays int,
    @DefaultOwnerID numeric,
    @l_OwnerContactID numeric,
    @ExpirationDays int,
    @l_ExpirationDays int,
    @MembersOnlyFlag char(1),
    @OwnerContactID numeric,
    @DefaultContentID numeric,
    @RowNum int,
    @URLSafeName varchar(255),
    @Counter int,
    @SuperGroupID numeric
  
  -- Get producer's preferences.
  SELECT @DefaultOwnerMeGroupSpecificInd = DefaultOwnerMeGroupSpecificInd,
         @DefaultOwnerContactID = DefaultOwnerContactID,
         @DefaultReminderDays = DefaultReminderDays
    FROM Producer
   WHERE ContactID = @InContactID

  -- Find out if this user is a member of a super group.
  SELECT @SuperGroupID = a.ContentAuthorityGroupID
    FROM Content_Authority_Group a, Content_Authority_Producer b
   WHERE a.ContentAuthorityGroupID = b.ContentAuthorityGroupID
     AND b.ContactID = @InContactID
     AND a.SuperGroupFlag = 'Y'

  -- Get nav_menu's info.
  SELECT @DefaultOwnerID = (SELECT TOP 1 ContactID FROM Content_Authority_Producer  WHERE DefaultOwnerFlag = 'Y' AND ContentAuthorityGroupID = a.ContentAuthorityGroupID),
         @OwnerContactID = a.OwnerContactID,
         @ExpirationDays = a.ExpirationDays,
         @DefaultContentID = a.ContentID,
         @MembersOnlyFlag = a.MembersOnlyFlag
    FROM Nav_Menu a, Content_Authority_Producer b
   WHERE NavMenuID = @InNavMenuID
     AND (a.ContentAuthorityGroupID = b.ContentAuthorityGroupID OR b.ContentAuthorityGroupID = @SuperGroupID)
     AND b.ContactID = @InContactID
     AND b.ContentEditorFlag = 'Y'
  
  -- Make sure the user has privilege to insert content record here.
  IF @@Rowcount = 0
    RAISERROR('You do not have privilege to create a content record for this navigation item/content folder.',16,1)

  -- Set default values according to preferences.
  IF @DefaultOwnerMeGroupSpecificInd = 'G'
    SET @l_OwnerContactID = @DefaultOwnerID
  ELSE IF @DefaultOwnerMeGroupSpecificInd = 'M'
    SET @l_OwnerContactID = @InContactID
  ELSE IF @DefaultOwnerMeGroupSpecificInd = 'S' AND @DefaultOwnerContactID IS NOT NULL
    SET @l_OwnerContactID = @DefaultOwnerContactID
  ELSE
    SET @l_OwnerContactID = @OwnerContactID

  IF @DefaultReminderDays IS NOT NULL
    SET @l_ExpirationDays = @DefaultReminderDays
  ELSE
    SET @l_ExpirationDays = @ExpirationDays

  --Make sure URLSafeName is unqiue.
  EXEC amsp_CMGetUniqueContentName NULL, @InContentTitle, @InNavMenuID, @URLSafeName OUTPUT

  INSERT
    INTO Content (
         WorkflowStatusCode,
         NavMenuID,
         Name,
         URLSafeName,
         ShowInTemplateFlag,
         OpenInNewWindowFlag,
         FuseFlag,
         SecureFlag,
         SuppressBannersFlag,
         OwnerContactID,
         ContactID,
         ExpirationDays,
         ArchiveAtExpirationFlag,
         MembersOnlyFlag)
  VALUES ('W',
          @InNavMenuID,
          @InContentTitle,
          @URLSafeName,
          'Y',
          'N',
          'Y',
          'N',
          'N',
          @l_OwnerContactID,
          @InContactID,
          @l_ExpirationDays,
          'N',
          @MembersOnlyFlag)

  SET @OutContentID = @@Identity

  -- If the Nav_Menu record doesn't have a default content record yet,
  -- make this a default.

  IF @DefaultContentID IS NULL
    UPDATE Nav_Menu
       SET ContentID = @OutContentID
     WHERE NavMenuID = @InNavMenuID

  --Copy security settings from Nav_Menu if there are any.
  IF @MembersOnlyFlag = 'Y'
      INSERT INTO Content_Security_Group
                  (ContentID,
                   SecurityGroupCode)
      SELECT @OutContentID,
             SecurityGroupCode
        FROM Nav_Menu_Security_Group
       WHERE NavMenuID = @InNavMenuID
END

GO
GRANT EXECUTE ON  [dbo].[amsp_CMInsertContent] TO [IMIS]
GO
Uses